<?php

namespace App\Http\Controllers\Car;

use App\Models\CarModels\EquipmentTaskRecord;
use App\Http\Controllers\Controller;
use \App\Models\CarModels\CarInfo;
use http\Env\Response;
use Illuminate\Http\Request;
use Illuminate\Database\QueryException;
use Validator;
/**
 * @group 设备管理->任务管理->任务(临时 + 过程)
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */
class EquipmentTaskRecordController extends Controller
{



    /**
     * 任务信息
     *
     * @queryParam summary 任务概要
     * @queryParam detail 任务详情
     * @queryParam staff_id 任务人员
     * @queryParam tools 工具类
     * @queryParam task_kind_detail_id 任务类型细类
     * @queryParam department_id 所属部门
     * @queryParam task_time 任务时间
     * @queryParam finish_time 结束时间
     * @queryParam is_tmp 任务状态(数字 自定义类型)
     * @queryParam status_id 是否是临时任务 (0 1自定义表示是或者不是)
     * @queryParam 搜索任务来源(以任务概要为基础搜索)
     *
     */
    public function index(Request $request)
    {
        //return response()->json(Hwcar::paginate(),200);
        $kind_id = $request->get('kind');
        if ($kind_id == null) {
            $query =  EquipmentTaskRecord::search($request->get('search'))->with('staff')->with('task_kind_detail');
        } else {
            $query =  EquipmentTaskRecord::search($request->get('search'))->where('task_kind_detail_id', $kind_id)->with('staff')->with('task_kind_detail');
        }


        return response()->json(encodeMsg(pageQuery($query,$request),200),200);
    }


    /**
     * 任务信息添加
     *
     * @bodyParam summary string required 任务概要
     * @bodyParam detail string required 任务详情
     * @bodyParam staff_id int required 任务人员
     * @bodyParam tools string required 工具类
     * @bodyParam task_kind_detail_id int required 任务类型细类
     * @bodyParam department_id int required 所属部门
     * @bodyParam task_time datetime required 任务时间
     * @bodyParam finish_time datetime required 结束时间
     * @bodyParam is_tmp int required 任务状态(数字 自定义类型)
     * @bodyParam status_id int required 是否是临时任务 (0 1自定义表示是或者不是)
     *
     * @queryParam summary 任务概要
     * @queryParam detail 任务详情
     * @queryParam staff_id 任务人员
     * @queryParam tools 工具类
     * @queryParam task_kind_detail_id 任务类型细类
     * @queryParam department_id 所属部门
     * @queryParam task_time 任务时间
     * @queryParam finish_time 结束时间
     * @queryParam is_tmp 任务状态(数字 自定义类型)
     * @queryParam status_id 是否是临时任务 (0 1自定义表示是或者不是)
     *
     */
    public function store(Request $request)
    {
        $e = genValidate();
        $validator = Validator::make($request->all(),$e);
        if($validator->fails()){
            return response()->json(encodeMsg($validator->errors()->messages(),400),400);
        }
        try {
            $data = EquipmentTaskRecord::create($request->all());
            return response()->json($data, 201);
        } catch (QueryException $e) {
            return response()->json(["message" => "车牌号重复"], 400);
        }
    }

    /**
     * 任务信息显示(单个信息显示)
     *

     *
     * @queryParam summary 任务概要
     * @queryParam detail 任务详情
     * @queryParam staff_id 任务人员
     * @queryParam tools 工具类
     * @queryParam task_kind_detail_id 任务类型细类
     * @queryParam department_id 所属部门
     * @queryParam task_time 任务时间
     * @queryParam finish_time 结束时间
     * @queryParam is_tmp 任务状态(数字 自定义类型)
     * @queryParam status_id 是否是临时任务 (0 1自定义表示是或者不是)
     *
     */
    public function show($pk)
    {
        $record_data = EquipmentTaskRecord::with('maintenance_records')->find($pk);
        //$car_data = CarInfo::find($pk)->first();
        if ($record_data == []) {
            return response()->json(["message" => "没有该任务信息"], 404);
        } else {
            //$car_data['record_data'] = $record_data;
            return response()->json($record_data, 200);
        }
    }

    /**
     * 任务信息修改 删除图片请把url设置成null
     *
     * @bodyParam summary string optional 任务概要
     * @bodyParam detail string optional 任务详情
     * @bodyParam staff_id int optional 任务人员
     * @bodyParam tools string optional 工具类
     * @bodyParam task_kind_detail_id int optional 任务类型细类
     * @bodyParam department_id int optional 所属部门
     * @bodyParam task_time datetime optional
     * @bodyParam finish_time datetime optional 结束时间
     * @bodyParam is_tmp int optional 任务状态(数字 自定义类型)
     * @bodyParam status_id int optional 是否是临时任务 (0 1自定义表示是或者不是)
     *
     * @queryParam summary 任务概要
     * @queryParam detail 任务详情
     * @queryParam staff_id 任务人员
     * @queryParam tools 工具类
     * @queryParam task_kind_detail_id 任务类型细类
     * @queryParam department_id 所属部门
     * @queryParam task_time 任务时间
     * @queryParam finish_time 结束时间
     * @queryParam is_tmp 任务状态(数字 自定义类型)
     * @queryParam status_id 是否是临时任务 (0 1自定义表示是或者不是)
     *
     */
    public function update(Request $request, $pk)
    {
        $e = genValidate();
        $validator = Validator::make($request->all(),$e);
        if($validator->fails()){
            return response()->json(encodeMsg($validator->errors()->messages(),400),400);
        }
        $carkind = EquipmentTaskRecord::find($pk);
        if ($carkind == []) {
            return response()->json(["message" => "没有该任务信息"], 404);
        }
        try {
            $carkind->update($request->all());
            return response()->json($carkind, 200);
        } catch (QueryException $e) {
            return response()->json(["message" => "车牌号重复"], 400);
        }
    }

    /**
     * 任务信息删除
     */

    public function destroy($pk)
    {
        $data = CarInfo::find($pk);
        if ($data == []) {
            return response()->json(["message" => "没有该任务信息"], 404);
        }
        $data->delete();
        return response()->json(["message" => "删除成功"], 200);
    }
}
